home *** CD-ROM | disk | FTP | other *** search
/ Deutsche Edition 1 / Deutsche Edition 1.iso / amok / 011-020 / amok12 / module / janus.def < prev    next >
Text File  |  1993-11-04  |  4KB  |  143 lines

  1. (*---------------------------------------------------------------------------
  2.     :Program.    Janus.def
  3.     :Author.     Bernd Preusing
  4.     :Address.    Gerhardstr. 16  D-2200 Elmshorn
  5.     :Phone.      04121/22486
  6.     :Shortcut.   [bep]
  7.     :Version.    1.0
  8.     :Date.       Mar-88
  9.     :Copyright.  PD
  10.     :Language.   Modula-II
  11.     :Translator. M2Amiga
  12.     :Imports.    
  13.     :UpDate.     
  14.     :Contents.   Library module for janus.library (Sidecar, PC card)
  15.     :Remark.     must be converted with ConvLibSym, MinVersion:0 !!
  16. ---------------------------------------------------------------------------*)
  17. (* Dies beruht auf keiner Dokumentation, ich habe alles nur durch
  18.    Disassemblieren der PC-Karten-Programme herausgefunden.
  19.    Das Modul ist keinesfalls vollständig, es gibt noch weit mehr
  20.    Konstanten und Strukturen, die ich aber noch nicht alle verstanden
  21.    habe. Wenn man genau weiß, was man tut, kann man dies Modul
  22.    benutzen, sonst läßt man lieber die Finger davon!
  23. *)
  24. (* $M- janus.library *)
  25. DEFINITION MODULE Janus;
  26.  
  27. FROM SYSTEM IMPORT
  28.   ADDRESS, LONGSET, BYTE;
  29.  
  30. FROM Exec IMPORT
  31.   Interrupt, Library, TaskPtr, InterruptPtr;
  32.  
  33. TYPE
  34.  Offset  = CARDINAL;
  35.  JMems   = (k16,k64,u2,u3,u4,u5,u6,u7,u8,u9,u10,u11,t0,t1,u14,u15,u16);
  36.  JMemSet = SET OF JMems;
  37.  IntNr   = [0..31];
  38.  BoardInt= RECORD
  39.         int      : Interrupt;
  40.                 task     : TaskPtr;  (* 22 *)
  41.                 sigMask  : LONGSET;  (* 26 *)
  42.                 memory   : ADDRESS;   (* 30 *) (* reserviertes *)
  43.                 nrBytes  : LONGCARD; (* 34 *)
  44.                 intNumber: IntNr; (* 38 *)
  45.        END;
  46.  BoardIntPtr = POINTER TO BoardInt;
  47.  JMemList = RECORD
  48.     a1,a2: BYTE;
  49.     amigaBase : ADDRESS;
  50.     pcSegment: CARDINAL;
  51.     belegt: CARDINAL; (* diese 2 cards auch in memliste *)
  52.     max   : CARDINAL; (* .. *)
  53.     frei  : CARDINAL;
  54.   END;
  55.  HandShakeMem = RECORD
  56.     x1 : CARDINAL;
  57.     ctrList : JMemList;
  58.     datList : JMemList;
  59.     intrs   : Offset;
  60.     adresses: Offset;
  61.     count   : CARDINAL;
  62.     semas   : ARRAY[0..31] OF RECORD x1,x2:BYTE END;
  63.     offsets : ARRAY[0..31] OF Offset;
  64.   END;
  65.  
  66.  JanusBase = RECORD
  67.     libNode : Library;
  68.     int1:LONGSET;
  69.         int2:LONGSET;
  70.         b18000:ADDRESS;
  71.         b7e000:ADDRESS;
  72.         badr  :ADDRESS;
  73.         execbase:ADDRESS;
  74.         dosbase:ADDRESS;
  75.         seglist:ADDRESS;
  76.         tableptr:ADDRESS;
  77.         inta1,
  78.         inta2: Interrupt;
  79.         regOff:CARDINAL;
  80.         table:ARRAY[0..31] OF InterruptPtr;
  81.    END;
  82.  
  83.  
  84. CONST
  85.   janusName = 'janus.library';
  86.   (* memtypes: *)
  87.   memData    = JMemSet{k64};
  88.   memControl = JMemSet{k16};
  89.   (* WORD-oders: *)
  90.   orderPC    = JMemSet{};
  91.   orderAmiga = JMemSet{t0};
  92.   orderGraph = JMemSet{t1};
  93.   (* specify exact memType by memXX+orderYY *)
  94.   switchMemType = 20000H; (* zur Adresse addieren, um memType zu wechseln *)
  95.   regOffset     = 7E000H; (* boardBase+regOffset auf Kartenregister *)
  96.  
  97. PROCEDURE AllocJMem(byteSize{0}:LONGCARD; memType{1}:JMemSet): ADDRESS;
  98.  CODE -60;
  99. PROCEDURE FreeJMem(memoryBlock{9}:ADDRESS; byteSize{0}:LONGCARD);
  100.  CODE -66;
  101.  
  102. PROCEDURE MakeInterrupt(int{0}:IntNr; signal{1}:LONGINT;
  103.             byteSize{3}:LONGCARD; memType{2}:JMemSet): BoardIntPtr;
  104.  CODE -108;
  105. PROCEDURE ClearInterrupt(int{8}:BoardIntPtr);
  106.  CODE -114;
  107.  
  108. PROCEDURE MemType(addr{0}:ADDRESS):JMemSet;
  109.  CODE -78;
  110. PROCEDURE BaseAddr(type{0}:JMemSet):ADDRESS;
  111.  CODE -72;
  112. PROCEDURE CalcOffset(addr{0}:ADDRESS):CARDINAL;
  113.  CODE -84;
  114.  
  115. PROCEDURE WaitSemaphore(addr{8}:ADDRESS);
  116.  CODE -120;
  117. PROCEDURE ClearSemaphore(addr{8}:ADDRESS);
  118.  CODE -126;
  119.  
  120. PROCEDURE SetIntPtr(int{0}:IntNr; intr{9}:InterruptPtr): InterruptPtr;
  121.  CODE -30;
  122. PROCEDURE AllowInt(int{0}:IntNr; allow{1}:BOOLEAN):BOOLEAN;
  123.  CODE -36;
  124. PROCEDURE SetPendingInt(int{0}:IntNr; set{1}:BOOLEAN):BOOLEAN;
  125.  CODE -42;
  126. PROCEDURE CauseInt(int{0}:IntNr);
  127.  CODE -48;
  128. PROCEDURE IntAcknowledged(int{0}:IntNr):BOOLEAN;
  129.  CODE -54;
  130.  
  131. PROCEDURE ReadOffset(int{0}:IntNr):CARDINAL;
  132.  CODE -90;
  133. PROCEDURE WriteOffset(int{0}:IntNr; offset{1}:CARDINAL):CARDINAL;
  134.  CODE -96;
  135.  
  136. PROCEDURE BoardAddress():ADDRESS;
  137.  CODE -102;
  138.  
  139. PROCEDURE MoveBytes(bytes{0}:LONGCARD; from{8},to{9}:ADDRESS);
  140.  CODE -132;
  141.  
  142. END Janus.Def
  143.